\chapter{PCRE2正则库的使用样式}

本章主要对PCRE2正则库的使用范式进行简要说明。

\section{PCRE2简单范例}

一个简单的PCRE2使用范例如代码\ref{code-pcre2simp}所示。

\cvfile[label=code-pcre2simp]{PCRE2简单案例}{pcre2-regex/codes/demo2/main.c}

\begin{note}
  \begin{enumerate}
    \item 第1行宏定义 \cinline{#define PCRE2_CODE_UNIT_WIDTH 8} 指明了字符位宽度，
        还可以使用 \cinline{#define PCRE2_CODE_UNIT_WIDTH 16} 和 %
        \cinline{#define PCRE2_CODE_UNIT_WIDTH 32} 。
    \item 可以使用 \cinline{gcc -Wall main.c -lpcre2-8}命令构建该代码，
        其中的 \cinline{-lpcre2-8} 表示链接8位PCRE2库，还可以根据需要使用 %
        \cinline{-lpcre2-16} 和 \cinline{-lpcre2-32} 链接参数。
  \end{enumerate}
\end{note}

\section{PCRE2完整范例}

在PCRE2的源代码中提供了一个\texttt{pcre2demo.c}示例ANSI C源代码文件，全面演示了
PCRE2的基本使用方法，如代码\ref{code-pcre2demo}所示。

\cvfile[label=code-pcre2demo]{PCRE2完整案例}{pcre2-regex/codes/demo1/pcre2demo.c}

有关PCRE2正则库中常用接口详见附录\ref{pcre2-app-interface}。

\begin{note}
  \begin{enumerate}
    \item PCRE2定义了\cinline{PCRE2_SPTR}指定宽度的地址类型，对于字符串指针，
        需要强制转换为该类型的指针才能在后续编译和匹配中使用；
    \item 在匹配操作完成后，需要释放匹配寄存器、正则缓存等占有的内存空间。
  \end{enumerate}
\end{note}
